package com.fowo.api.sys.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fowo.api.common.model.SimpleItem;
import com.fowo.api.sys.entity.SysRole;
import com.fowo.api.sys.model.*;

import java.util.List;

/*
 * 系统角色服务
 */
public interface SysRoleService extends IService<SysRole> {
    /** 获取指定用户的角色列表 */
    List<SimpleItem> getSimplesByUserId(Long userId);
    /** 创建 */
    SysRole create(CreateSysRole model);
    /** 复制 */
    SysRole copy(CopySysRole model);
    /** 分页查询 */
    Page<SysRoleItemVo> searchPage(SysRoleSearchParamPo search);
    /** 查询 */
    List<SysRoleItemVo> search(SysRoleSearchParamPo search);
    /** 更新 */
    boolean update(SysRoleVo sysRoleVo);
    /** 获取 */
    SysRoleVo getVoById(Long id);
    /** 获取角色的权限视图 */
    SysRolePermissionVo getRolePermission(Long id);
    /** 更新角色的权限视图 */
    void updateRolePermission(SysRolePermissionVo vo);

    SysRoleDataVo getDataVoById(Long roleId);

    boolean updateData(Long roleId, SysRoleDataVo dataVo);

    void removeUsersInRole(List<Long> userIds, Long roleId);

    void addUsersInRole(List<Long> userIds, Long roleId);

    /**
     * 批量在用户列表上填充所属角色信息
     * @param users 用户列表
     */
    void fillUserListRoles(List<SysUserItemVo> users);
}
